package cn.manter.basic.mapper;

import cn.manter.basic.query.BaseQuery;

import java.util.List;

public interface BaseMapper <T>{
    // 查询所有
    /**
     * @Title: loadAll
     * @Description: TODO
     * @Author: Mr.Zhao
     * @Version: 1.0
     * @Date:  2022/6/21 0021 19:37
     * @Parameters: []
     * @Return java.util.List<cn.manter.org.domain.T>
     */
    List<T> loadAll();

    // 查询通过id
    /**
     * @Title: loadById
     * @Description: TODO
     * @Author: Mr.Zhao
     * @Version: 1.0
     * @Date:  2022/6/21 0021 18:03
     * @Parameters: [id]
     * @Return cn.manter.org.domain.T
     */
    T loadById(Long id);


    // 删除通过id
    /**
     * @Title: remove
     * @Description: TODO
     * @Author: Mr.Zhao
     * @Version: 1.0
     * @Date:  2022/6/21 0021 18:04
     * @Parameters: [id]
     * @Return void
     */
    void remove(Long id);

    // 添加

    /**
     * @Title: save
     * @Description: TODO
     * @Author: Mr.Zhao
     * @Version: 1.0
     * @Date:  2022/6/21 0021 18:04
     * @Parameters: [t]
     * @Return void
     */
    void save(T t);

    // 修改
    /**
     * @Title: update
     * @Description: TODO
     * @Author: Mr.Zhao
     * @Version: 1.0
     * @Date:  2022/6/21 0021 18:04
     * @Parameters: [t]
     * @Return void
     */
    void update(T t);

    // 分页 + 高级查询
    /**
     * @Title: queryData
     * @Description: TODO
     * @Author: Mr.Zhao
     * @Version: 1.0
     * @Date:  2022/6/21 0021 18:04
     * @Parameters: [tQuery]
     * @Return java.util.List<cn.manter.org.domain.T>
     */
    List<T> queryData(BaseQuery baseQuery);

    // 查询总条数
    /**
     * @Title: queryCount
     * @Description: TODO
     * @Author: Mr.Zhao
     * @Version: 1.0
     * @Date:  2022/6/21 0021 18:04
     * @Parameters: [tQuery]
     * @Return java.lang.Integer
     */
    Integer queryCount(BaseQuery baseQuery);

    void batchDel(Long[] ids);
}
